﻿
using Microsoft.Xna.Framework;

using Tomahawk.Runtime.Logic;
using Tomahawk.Runtime.Resources;
using Tomahawk.Runtime.Physics.Descriptors;

namespace Tomahawk.Runtime.Physics.Interfaces
{
    public interface IPhysicsActor : ILoadableResource
    {
        #region Properties
        PhysicsActorType PhysicsType { get; }
        XObject Data { get; set; }

        void SetMass(float mass, string bodyName);
        float GetMass(string bodyName);
        Vector3 GetLocation(string bodyName);
        Quaternion GetRotation(string bodyName);
        #endregion

        #region Movement
        bool MoveTo(string bodyName, Vector3 location, Quaternion rotation);
        #endregion

        #region Forces
        bool AddWorldForce(string bodyName, Vector3 force, Vector3 position);
        bool AddLocalForce(string bodyName, Vector3 force, Vector3 position);
        bool AddWorldTorque(string bodyName, Vector3 torque);
        bool AddLocalTorque(string bodyName, Vector3 torque);
        #endregion
    }
}
